package com.shujia.io_.three;

import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

public class OutputStreamDemo {


    @Test
    public void test2() {
        // 字节输出流, 可以写入中文到文本文件
        try (OutputStream os = new FileOutputStream("C:\\Users\\Thinkpad\\Desktop\\c.txt")) {

            // 字节流只能写字节, 字节流能不能写中文?
            // utf-8的一个中文是3个字节, 在写的时候就把这3个字节都写入, 在文本里面会组合成一个中文
            byte[] bytes = "作为王朝硕果仅存的异姓王".getBytes();
            byte[] bytes1 = new byte[1024];
            for (int i = 0; i < bytes.length; i++) {
                bytes1[i] = bytes[i];
            }
            os.write(bytes1, 0, bytes.length);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test1() {
        //会覆盖原来写入的文本信息, 如果要追加需要在构造方法后面添加一个true
        try (OutputStream os = new FileOutputStream("file\\b.txt", true)) {
            //
            os.write(97);
            // os.write(37650);// 超出了字节的范围, 会乱码
            os.write(98);
            // 把管道里面的流数据都刷新的磁盘
            // 在close方法关闭资源之前会执行flush
            os.flush();
            os.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
